package Static_Final;/*
 *
 * @author 陈粒
 * @version 创建时间：2021/7/8 15:59
 */

/**
 * static笔试题1
 * 执行过程：
 * 找到main方法入口，main方法是程序入口，但在执行main方法之前，要先加载Static_Test类
 *
 * 加载Static_Test类的时候，发现Static_Test类继承Base类，于是先去加载Base类
 *
 * 加载Base类的时候，发现Base类有static块，而是先执行static块，输出base static结果
 *
 * Base类加载完成后，再去加载Static_Test类，发现Static_Test类也有static块，而是执行Static_Test类中的static块，输出Static_Test static1结果
 *
 * Base类和Static_Test类加载完成后，然后执行main方法中的new Static_Test()，调用子类构造器之前会先调用父类构造器
 *
 * 调用父类构造器，输出base constructor结果

 * 然后再调用子类构造器，输出Static_Test constructor结果
 */
public class Static_Test1 extends Base{

    static{
        System.out.println("Static_Test1 static");
    }

    public Static_Test1(){
        System.out.println("Static_Test1 constructor");
    }

    public static void main(String[] args) {
        new Static_Test1();
    }
}

class Base{

    static{
        System.out.println("base static");
    }

    public Base(){
        System.out.println("base constructor");
    }
}